#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int N=2e5+10;
#define INF 0x3f3f3f3f;
typedef long long int ll;
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//----------------------------------------------------------------------------//
int n,p[N],q[N],gg[N];
void solve()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>p[i];

	string s;
	cin>>s;

	for(int i=1;i<=n;i++) gg[p[i]]=s[i-1]-'0';
	
	int cur=1;
	for(int i=1;i<=n;i++) if(gg[i]==0) q[i]=cur++;
	for(int i=1;i<=n;i++) if(gg[i]==1) q[i]=cur++;

	for(int i=1;i<=n;i++) cout<<q[p[i]]<<" ";
	cout<<'\n';

	
}

int main()
{
	close();
	int T; cin>>T;
	while (T--) solve();
	return 0;
}
//p原,q现在
//s[i]==1的位置都要大于s[i]==0,对于q序列
//使得i从1到n,|pi-qi|取得最小值